﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Gustozzi.DAL;
using System.Text;
namespace WebGustozzi
{
    public partial class wfBuscarDireccionCliente : System.Web.UI.Page
    {
        VentasDataEntities contexto;
        
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                Inicializa();
                hdf_InicioGrilla.Value = "S";
            }
            else
            {
                hdf_InicioGrilla.Value = "N";
            } 

        }
        public void Inicializa() 
        {
             
            if (contexto == null)
            {
                contexto = new VentasDataEntities();
            }
            string codigoCliente = Request.QueryString["codCl"];
            hdfCodigoCliente.Value = codigoCliente;

            int codCliente = Convert.ToInt32(codigoCliente);
                       
            var lstDirecciones = from oDireccion in contexto.ClienteDirecciones
                                 where oDireccion.codigoCliente == codCliente && oDireccion.estado == "A"
                                 select oDireccion;


            grvDireccion.DataSource = lstDirecciones;
            grvDireccion.DataBind();

            if (lstDirecciones != null)
            {
                Session["listaDirecciones"] = lstDirecciones.ToList();
            }
        }

        protected void grvDireccion_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (contexto == null)
            {
                contexto = new VentasDataEntities();
            }
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                int idDireccion = Convert.ToInt32(e.Row.Cells[0].Text);

                var direccion = (from p in contexto.ClienteDirecciones.Include("Departamento,Provincia,Distrito")
                                 where p.codigoDireccion == idDireccion
                                 select new
                                 {
                                     nombreDpto = p.Departamento.nombreDpto,
                                     nombreProvincia = p.Provincia.nombreProvincia,
                                     nombreDistrito = p.Distrito.nombreDistrito
                                 });
                if (direccion != null)
                {
                    if (direccion.Count() != 0)
                    {
                        var oDireccion = direccion.First();
                        e.Row.Cells[2].Text = oDireccion.nombreDpto;
                        e.Row.Cells[3].Text = oDireccion.nombreProvincia;
                        e.Row.Cells[4].Text = oDireccion.nombreDistrito;
                    }
                    else
                    {
                        var listado = Session["listaDirecciones"];
                        List<ClienteDireccion> lstDirecciones = null;
                        if (listado != null)
                        {
                            lstDirecciones = (List<ClienteDireccion>)listado;
                            int idDistrito = lstDirecciones[e.Row.DataItemIndex].codigoDistrito;
                            int idProvincia = lstDirecciones[e.Row.DataItemIndex].codigoProvincia;
                            int idDepartamento = lstDirecciones[e.Row.DataItemIndex].codigoDistrito;
                            var oDist = (from p in contexto.Distritos.Include("Provincia,Departamento")
                                         where p.codigoDistrito == idDistrito && p.codigoProvincia == idProvincia
                                         && p.codigoDpto == idDepartamento
                                         select new
                                         {
                                             NombreDistrito = p.nombreDistrito,
                                             NombreProvincia = p.Provincia.nombreProvincia,
                                             NombreDepartamento = p.Provincia.Departamento.nombreDpto
                                         }).First();


                            e.Row.Cells[2].Text = oDist.NombreDepartamento;
                            e.Row.Cells[3].Text = oDist.NombreProvincia;
                            e.Row.Cells[4].Text = oDist.NombreDistrito;

                        }
                    }
                }

                e.Row.Attributes["OnClick"] = Page.ClientScript.GetPostBackClientHyperlink(this.grvDireccion, "Select$" + e.Row.RowIndex.ToString());

                ClienteDireccion oItem = (ClienteDireccion)e.Row.DataItem;

                StringBuilder strConstructor = new StringBuilder();

                string sNavigateURL = String.Format("window.opener.document.getElementById('CPHPrincipal_txtDireccion').value=\"{0}\"; ",
                         e.Row.Cells[1].Text + "/" + e.Row.Cells[2].Text + "/" + e.Row.Cells[3].Text + "/" + e.Row.Cells[4].Text);

                strConstructor.Append(sNavigateURL);
                strConstructor.Append("window.close();");


                ((LinkButton)(e.Row.Cells[5].Controls[0])).Attributes.Add("onclick", strConstructor.ToString());

            }
        }
    }
}